Hugo 提供你透過設置 Config 的方式,讓我們基本上不用動到程式就可以操控你的整個網站,今天來講一下關於 Hugo Config 的基本功能。
這邊有列出所有屬於官方定義的配置參數,有些參數帶有括號的,表示該參數本身若無配置,則代入括號中的值做為預設配置,例如:
canonifyURLs (false)
此參數設置影響的是若你想把站點內網址,從相對網址 /a/url
,轉為絕對網址 http://your.baseurl.dev/a/url
,你必須追加 canonifyURLs: true
配置到你的 config 檔案中,否則會使用預設的 false
(不轉換)。
Hugo 預設會在你的 site root
資料夾底下找尋 config.toml
、config.yaml
、或是 config.json
作為專案配置檔,目前初始化產生的檔案格式預設都是 .toml
。
當你專案目錄底下有數種 Config 格式時,Hugo 會以下列順序套用配置檔案:
./config.toml
./config.yaml
./config.json
你可以在執行 hugo server
時指定要用哪個 config,例如:
hugo --config sandbox.toml
一開始專案只會用一個 config.toml 去設置所有的配置,若有一天你需要更靈活的配置,可以將執行環境分成 production、staging 等,用區分環境的方式套用不同的配置,而且你可以將每個配置項目在拆解成數份檔案,放到 configDir
底下 (預設為 config/),例如我想要的配置有:
# sample config
...
[permalinks]
post = "/:year/:month/:slug/"
page = "/:slug/"
...
你可以拆成:
├── config
│ ├── _default
│ │ ├── config.toml
│ │ ├── permalinks.toml
若需要分成不同語系 (以 menu 選單為例):
├── config
│ ├── _default
│ │ ├── menus.en.toml
│ │ ├── menus.zh-tw.toml
假設整個配置資料結構是這樣:
├── config
│ ├── _default
│ │ ├── config.toml
│ │ ├── permalinks.toml
│ │ ├── menus.en.toml
│ │ ├── menus.zh-tw.toml
│ ├── production
│ │ ├── config.toml
│ │ ├── permalinks.toml
│ └── staging
│ ├── config.toml
│ │ ├── permalinks.toml
當你執行以下指令,他會合併 _default + staging 的所有配置 (且會以 staging 優先):
hugo --environment staging
在沒有任何配置資料結構的情況下,執行 hugo serve
等同於執行以下指令:
hugo --environment develoment
執行 hugo
(不指定使用環境時) 等同於執行:
hugo --environment production
Hugo 讓我們在使用配置上有「多種套餐」混用搭配,你可以選擇一鍋全部搞定,也可以按照自己的習慣分門別類,或是區分更多不同的執行環境;
另外,官方介紹 Config 的文件還有一些沒提到的部分,例如:
有興趣的朋友可以到官網查閱。